package com.atguigu.gulimail.order;

import org.springframework.amqp.rabbit.annotation.EnableRabbit;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

/**
 * seata控制分布式事务
 * 1、每一个微服务先创建一张undo_log表
 * 2、下载seata服务器
 * 3、整合
 * 	 1、导入依赖
 * 	 2、解压启动seata
 * 		registry.conf 注册中心配置
 * 		file.conf
 * 	 3、所有想要用到分布式事务的微服务都应该seataDataSourceProxy代理自己的数据源
 * 	 4、每个微服务，都必须导入 registry.conf 注册中心配置 		file.conf
 * 	 5、vgroup_mapping.gulimail-ware-fescar-service-group = "wznn_tx_group" 设置
 */

/**
 *  1、sentinel整合
 *   1、导入依赖
 *   2、下载sentinel控制台
 *   3、在yml配置sentinel的参数
 *   4、在控制台调整参数
 *
 *	2、每个微服务都导入actuator 并配置 management.endpoints.web.exposure.include=*
 *
 *  3、自定义sentinel流控返回数据
 *
 *	4、使用sentinel来保护feign远程调用，熔断：
 *		1、调用方的熔断保护：feign.sentinel.enabled = true;
 *		2、调用方手动指定远程服务的降级策略。远程服务被降级处理，触发我们的熔断回调方法，
 *		3、超大流量的时候，必须牺牲掉一些远程服务。在服务的提供方（远程服务）指定降级策略
 *			提供方是在运行，但是不运行自己的业务逻辑，返回的是默认数据（限流的数据）
 *
 */
@EnableFeignClients
@SpringBootApplication
@EnableDiscoveryClient
@EnableRabbit
@EnableRedisHttpSession
public class GulimailOrderApplication {

	public static void main(String[] args) {
		SpringApplication.run(GulimailOrderApplication.class, args);
	}

}
